home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene Storm
/
Scene Storm - Volume 1.iso
/
coding
/
asm
/
demos
/
copperbarlen
/
barlen_cols.s
Wrap
Text File
|
1980-01-03
|
9KB
|
415 lines
section framework,code_c
*-------------- Colour Copperbar test...
barlen equ 9
Kill_OS: move.l (AbsExecBase).w,a6 ; get execbase
lea Gfxlib(pc),a1 ; point to graphics.library
jsr OldOpenLibrary(a6) ; open graphics library
move.l d0,Gfxbase ; save gfxbase address
jsr Forbid(a6) ; () turn off multitasking
lea (_Custom).l,a5 ; custom base address in a5
move.w dmaconr(a5),dmasav ; save dma
move.w intenar(a5),intsav ; save intena
move.w adkconr(a5),adksav ; save adkcon
move.w #$7fff,intena(a5) ; turn off intena
move.l #Copperlist,cop1lch(a5) ; install custom copperlist
clr.w copjmp1(a5) ; clear second copperlist
move.w #$c020,intena(a5) ; return INTENA:
move.w #$87c0,dmacon(a5) ; return DMA:Cop/Blit/Sprite
move.l #screen+0,d0 ; get screen ptr in d0
move.w d0,pl1l ; find bpl1ptl (low word)
swap d0 ; swap to get high word
move.w d0,pl1h ; find bpl1pth (high word)
wait: cmpi.b #255,$dff006
bne.s wait
bsr changecop
btst #left,(_ciaa).l ; left mouse wait
bne.s wait ; loop until pressed
Help_OS: lea (_Custom).l,a5 ; custom base address in a5
move.l GFXbase(pc),a1 ; get gfxbase in a1
move.l SysCop1(a1),cop1lch(a5) ; restore old system copper
move.w dmasav,d0 ; get saved dma value
or.w #$8000,d0
move.w d0,dmacon(a5) ; restore old dma
move.w adksav,d0 ; get saved adkcon value
or.w #$8000,d0
move.w d0,adkcon(a5) ; restore old adkcon
move.w intsav,d0 ; get saved intena value
or.w #$8000,d0
move.w d0,intena(a5) ; restore old interna
move.l (AbsExecBase).w,a6 ; get execbase
jsr Permit(a6) ; permit multitasking
move.l GFXbase(pc),a1 ; get gfxbase in a1
jsr CloseLibrary(a6) ; close gfx library
moveq.l #0,d0 ; no cli return code
rts
changecop: not.b flag
bne.s ccrts
lea copcols(pc),a0
moveq #33-2,d0 ; 100 lines
move.l barptr,a1 ; start of list
move.l a1,temptr ; updates temporary pointer
moveq #0,d1
ccloop move.b (a1)+,7(a0) ; update colour
lea 8(a0),a0
addq.b #1,d1
cmp.b #barlen,d1 ; end of sub-bar?
bne.s ccdbra
move.l temptr,a1
addq.l #1,a1
cmp.l #barend,temptr
bne.s ccd2
lea bardata(pc),a1
ccd2 move.l a1,temptr
moveq #0,d1
ccdbra dbra d0,ccloop
addq.l #1,barptr
move.l barptr,d0
cmp.l #barend,d0 ; have we got to the bottom
bne.s ccrts ; of the bar list. if so,
move.l #bardata,barptr ; reset to start of list
ccrts rts ; return to interrupt
bardata: dc.b $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0D,$0E,$0E,$0F
dc.b $0F,$0F,$0E,$0E,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01
ds.b 20
even
barend DC.B 0,1,2,3,4,5,6,7,8,9,10,11,12,13,13,14,14,15,15,15
DC.B 14,14,13,13,12,11,10,9,8,7,6,5,4,3,2,1
dc.b 255
even
flag dc.w 0
CopperList: dc.w diwstrt,$2C81
dc.w diwstop,$2CC1
dc.w ddfstrt,$0038
dc.w ddfstop,$00D0
dc.w bplcon0,$1200 ; (1 bitplane Lo-Res)
dc.w bpl1mod,0 ; (no moduo)
dc.w bpl2mod,0 ; (no moduo)
dc.w color00,0 ; colour 0 (black)
dc.w color01,$fff ; colour 1 (white)
dc.w spr0pth,0,spr0ptl,0,spr1pth,0,spr1ptl,0
dc.w spr2pth,0,spr2ptl,0,spr3pth,0,spr3ptl,0
dc.w spr4pth,0,spr4ptl,0,spr5pth,0,spr5ptl,0
dc.w spr6pth,0,spr6ptl,0,spr7pth,0,spr7ptl,0
dc.w bpl1pth
pl1h: dc.w 0
dc.w bpl1ptl
pl1l: dc.w 0
copcols dc.w $2C09,$FFFE,$0180,$0000
dc.w $2D09,$FFFE,$0180,$0000
dc.w $2E09,$FFFE,$0180,$0000
dc.w $2F09,$FFFE,$0180,$0000
dc.w $3009,$FFFE,$0180,$0000
dc.w $3109,$FFFE,$0180,$0000
dc.w $3209,$FFFE,$0180,$0000
dc.w $3309,$FFFE,$0180,$0000
dc.w $3409,$FFFE,$0180,$0000
dc.w $3509,$FFFE,$0180,$0000
dc.w $3609,$FFFE,$0180,$0000
dc.w $3709,$FFFE,$0180,$0000
dc.w $3809,$FFFE,$0180,$0000
dc.w $3909,$FFFE,$0180,$0000
dc.w $3A09,$FFFE,$0180,$0000
dc.w $3B09,$FFFE,$0180,$0000
dc.w $3C09,$FFFE,$0180,$0000
dc.w $3D09,$FFFE,$0180,$0000
dc.w $3E09,$FFFE,$0180,$0000
dc.w $3F09,$FFFE,$0180,$0000
dc.w $4009,$FFFE,$0180,$0000
dc.w $4109,$FFFE,$0180,$0000
dc.w $4209,$FFFE,$0180,$0000
dc.w $4309,$FFFE,$0180,$0000
dc.w $4409,$FFFE,$0180,$0000
dc.w $4509,$FFFE,$0180,$0000
dc.w $4609,$FFFE,$0180,$0000
dc.w $4709,$FFFE,$0180,$0000
dc.w $4809,$FFFE,$0180,$0000
dc.w $4909,$FFFE,$0180,$0000
dc.w $4a09,$FFFE,$0180,$0000
dc.w $4b09,$FFFE,$0180,$0000
dc.w $4c09,$FFFE,$0180,$0000
dc.w $FFFF,$FFFE ;end copper (impossible pos)
dmasav: dc.w 0
adksav: dc.w 0
intsav: dc.w 0
GFXlib: dc.b "graphics.library"
even
GFXBase: ds.l 2
even
temptr: dc.l bardata
even
barptr: dc.l bardata
even
Screen: dcb.b 20480,0 ;reserve some memory for screen area
Level3Vector equ $6c
SysCop1 equ $26
_ciaa: equ $bfe001
_ciab: equ $bfd000
left equ 6
_custom: equ $dff000
bltddat: equ $000
dmaconr: equ $002
vposr: equ $004
vhposr: equ $006
dskdatr: equ $008
joy0dat: equ $00a
joy1dat: equ $00c
clxdat: equ $00e
adkconr: equ $010
pot0dat: equ $012
pot1dat: equ $014
potgor: equ $016
serdatr: equ $018
dskbytr: equ $01a
intenar: equ $01c
intreqr: equ $01e
dskpth: equ $020
dskptl: equ $022
dsklen: equ $024
dskdat: equ $026
refptr: equ $028
vposw: equ $02a
vhposw: equ $02c
copcon: equ $02e
serdat: equ $030
serper: equ $032
potgo: equ $034
joytest: equ $036
strequ: equ $038
strvbl: equ $03a
strhor: equ $03c
strlong: equ $03e
bltcon0: equ $040
bltcon1: equ $042
bltafwm: equ $044
bltalwm: equ $046
bltcpth: equ $048
bltcptl: equ $04a
bltbpth: equ $04c
bltbptl: equ $04e
bltapth: equ $050
bltaptl: equ $052
bltdpth: equ $054
bltdptl: equ $056
bltsize: equ $058
bltcmod: equ $060
bltbmod: equ $062
bltamod: equ $064
bltdmod: equ $066
bltcdat: equ $070
bltbdat: equ $072
bltadat: equ $074
dsksync: equ $07e
cop1lch: equ $080
cop1lcl: equ $082
cop2lch: equ $084
cop2lcl: equ $086
copjmp1: equ $088
copjmp2: equ $08a
copins: equ $08c
diwstrt: equ $08e
diwstop: equ $090
ddfstrt: equ $092
ddfstop: equ $094
dmacon: equ $096
clxcon: equ $098
intena: equ $09a
intreq: equ $09c
adkcon: equ $09e
aud0pth: equ $0a0
aud0ptl: equ $0a2
aud0len: equ $0a4
aud0per: equ $0a6
aud0vol: equ $0a8
aud0dat: equ $0aa
aud1pth: equ $0b0
aud1ptl: equ $0b2
aud1len: equ $0b4
aud1per: equ $0b6
aud1vol: equ $0b8
aud1dat: equ $0ba
aud2pth: equ $0c0
aud2ptl: equ $0c2
aud2len: equ $0c4
aud2per: equ $0c6
aud2vol: equ $0c8
aud2dat: equ $0ca
aud3pth: equ $0d0
aud3ptl: equ $0d2
aud3len: equ $0d4
aud3per: equ $0d6
aud3vol: equ $0d8
aud3dat: equ $0da
bpl1pth: equ $0e0
bpl1ptl: equ $0e2
bpl2pth: equ $0e4
bpl2ptl: equ $0e6
bpl3pth: equ $0e8
bpl3ptl: equ $0ea
bpl4pth: equ $0ec
bpl4ptl: equ $0ee
bpl5pth: equ $0f0
bpl5ptl: equ $0f2
bpl6pth: equ $0f4
bpl6ptl: equ $0f6
bplcon0: equ $100
bplcon1: equ $102
bplcon2: equ $104
bpl1mod: equ $108
bpl2mod: equ $10a
bpl1dat: equ $110
bpl2dat: equ $112
bpl3dat: equ $114
bpl4dat: equ $116
bpl5dat: equ $118
bpl6dat: equ $11a
spr0pth: equ $120
spr0ptl: equ $122
spr1pth: equ $124
spr1ptl: equ $126
spr2pth: equ $128
spr2ptl: equ $12a
spr3pth: equ $12c
spr3ptl: equ $12e
spr4pth: equ $130
spr4ptl: equ $132
spr5pth: equ $134
spr5ptl: equ $136
spr6pth: equ $138
spr6ptl: equ $13a
spr7pth: equ $13c
spr7ptl: equ $13e
spr0pos: equ $140
spr0ctl: equ $142
spr0data: equ $144
spr0datb: equ $146
spr1pos: equ $148
spr1ctl: equ $14a
spr1data: equ $14c
spr1datb: equ $14e
spr2pos: equ $150
spr2ctl: equ $152
spr2data: equ $154
spr2datb: equ $156
spr3pos: equ $158
spr3ctl: equ $15a
spr3data: equ $15c
spr3datb: equ $15e
spr4pos: equ $160
spr4ctl: equ $162
spr4data: equ $164
spr4datb: equ $166
spr5pos: equ $168
spr5ctl: equ $16a
spr5data: equ $16c
spr5datb: equ $16e
spr6pos: equ $170
spr6ctl: equ $172
spr6data: equ $174
spr6datb: equ $176
spr7pos: equ $178
spr7ctl: equ $17a
spr7data: equ $17c
spr7datb: equ $17e
color00: equ $180
color01: equ $182
color02: equ $184
color03: equ $186
color04: equ $188
color05: equ $18a
color06: equ $18c
color07: equ $18e
color08: equ $190
color09: equ $192
color10: equ $194
color11: equ $196
color12: equ $198
color13: equ $19a
color14: equ $19c
color15: equ $19e
color16: equ $1a0
color17: equ $1a2
color18: equ $1a4
color19: equ $1a6
color20: equ $1a8
color21: equ $1aa
color22: equ $1ac
color23: equ $1ae
color24: equ $1b0
color25: equ $1b2
color26: equ $1b4
color27: equ $1b6
color28: equ $1b8
color29: equ $1ba
color30: equ $1bc
color31: equ $1be
open: equ -30
close: equ -36
read: equ -42
write: equ -48
input: equ -54
output: equ -60
seek: equ -66
deletefile: equ -72
rename: equ -78
lock: equ -84
unlock: equ -90
duplock: equ -96
examine: equ -102
exnext: equ -108
info: equ -114
createdir: equ -120
currentdir: equ -126
ioErr: equ -132
CreateProc: equ -138
exit: equ -144
loadseg: equ -150
unloadseg: equ -156
getpacket: equ -162
queupacket: equ -168
deviceproc: equ -174
setcomment: equ -180
setprotection: equ -186
datestamp: equ -192
delay: equ -198
waitforchar: equ -204
parentdir: equ -210
IsInteractive: equ -216
Execute: equ -222
AbsExecBase: equ 4
forbid equ -132
permit equ -138
allocmem: equ -198
freemem: equ -210
getmsg: equ -372
replymsg: equ -378
waitport: equ -384
closelibrary: equ -414
opendevice: equ -444
closedevice: equ -450
doio: equ -456
oldopenlibrary equ -408
openlibrary: equ -552